import toolMgr from '@/biz/base/tool.js'
import productOpt from '@/biz/option/product.js'
import ruleOpt from '@/biz/option/rule.js'
import templateMgr from '@/biz/bonus/template.js'
import dt from '@dt/dt'
import houseOpt from '@/biz/option/house.js'
import organizationOpt from '@/biz/option/organization.js'

// 顾问

import clueCustomerMgr from '@/biz/customer/clueCustomer.js';
// const repeatValidator = async (rule, value, callback) => {
//   if (await templateMgr.repeat(value)) {
//     callback()
//   } else {
//     callback(new Error('同项目模板名称不能重复'))
//   }
// }

// function accessory(_this) {
//   if (_this.$route.name === 'bonusTemplateEdit') {
//     let api = toolMgr.unloadFile()
//     let files = []
//     if (_this.info.accessoryBOList && _this.info.accessoryBOList.length > 0) {
//       files = _this.info.accessoryBOList.map(item => ({
//         url: item.accessoryUrl,
//         name: item.accessoryName
//       }))
//     }
//     return [{
//       title: '附件上传',
//       key: 'accessoryBOList',
//       upload: {
//         title: '上传文件',
//         api,
//         files,
//         multiple: true,
//         preview: (file) => {
//           toolMgr.downloadFile(file.url, file.name)
//         }
//       },
//       data: {
//         to: (v) => {
//           let accessoryBOList = v.map(item => ({
//             accessoryName: item.name,
//             accessoryUrl: item.response ? item.response.data.imageURL : item.url
//           }))
//           return {
//             accessoryBOList
//           }
//         }
//       }
//     }]
//   } else {
//     let files = []
//     if (_this.info.accessoryBOList) {
//       files = _this.info.accessoryBOList.map(item => ({
//         value: item.accessoryName,
//         key: item.accessoryUrl
//       }))
//     }
//     return [{
//       title: '附件',
//       tag: {
//         type: 'text',
//         options: files,
//         click: (tag) => {
//           toolMgr.downloadFile(tag.key, tag.value)
//         }
//       }
//     }]
//   }
// }

// function productInfo(_this) {
//   return [productOpt.create({
//     key: 'productIds',
//     multiple: true,
//     type: 'array',
//     disabled: _this.$route.name !== 'bonusTemplateEdit' ? true : false,
//     hid: _this.$route.query.housesId || dt.buildInfo().housesId,
//   })]
// }

// function effectiveDate(_this) {
//   return [{
//     title: '生效日期',
//     placeholder: '请选择生效日期',
//     key: 'effectiveStartDate',
//     disabled: _this.$route.name !== 'bonusTemplateEdit' ? true : false,
//     date: {
//       type: 'daterange'
//     },
//     data: {
//       from: (info) => {
//         if (info.effectiveStartDate && info.effectiveEndDate) {
//           return [info.effectiveStartDate, info.effectiveEndDate]
//         }
//         return null
//       },
//       to: (v) => {
//         return {
//           effectiveStartDate: v[0],
//           effectiveEndDate: v[1],
//         }
//       }
//     },
//     rules: [
//       ruleOpt.required('请选择生效日期')
//     ]
//   }]
// }
let _this = null

function houseInfo(info) {
  let opt = {
    // change: () => {
    //   info.productIds = null
    //   _this.update()
    // }
  }
  if (info && info.housesId) {
    opt.options = [{
      key: info.housesId + '-' + info.companyId,
      value: info.housesName + '（' + info.companyName + '）'
    }]
  }
  return houseOpt.create(opt)
}


function guInfo(info) {
  let opt = {
    // change: () => {
    //   info.productIds = null
    //   _this.update()
    // }
  }
  if (info && info.housesId) {
    opt.options = [{
      key: info.housesId + '-' + info.companyId,
      value: info.housesName + '（' + info.companyName + '）'
    }]
  }
  return houseOpt.create(opt)
}

function options1(vm) {
  _this = vm
  let cityAttrSort = [];
  return [
    houseInfo(_this.info),
    {
      key: 'city',
      title: '所属城市',
      load: (o) => {
        organizationOpt.getAreacodePropertyList().then(res => {
          o.cascader.options = res
          cityAttrSort = res
        })
      },
      cascader: {
        options: cityAttrSort,
        loadData(item, callback) {
          item.loading = true;
          let params = {
            level: 3,
            page: "1",
            parentCode: item.value,
            rows: "100",
          };
          organizationOpt.getAreacodePropertyList2(params).then((res) => {
            res.list.map((itemL) => {
              itemL.value = itemL.cityCode;
              itemL.label = itemL.cityName;
              item.children.push(itemL);
            });

            item.loading = false;
            callback();
          });
        }
      },
      rules: [{
        required: true,
        message: '请选择归属地',
        trigger: 'blur'
      }]
    },
    [{
      title: '呼入号码',
      key: 'callPhone',
      placeholder: '请输入呼入号码',
      select: {
        options: dt.dictInfo().BaseAgentTypeEnum,
      },
      rules: [
        ruleOpt.required('请输入呼入号码'),
        // ruleOpt.max(50),
        // { validator: repeatValidator, trigger: 'blur' }
      ]
    }],

  ]
}

function options2(_this) {
  return [
    [{
      title: '顾问姓名',
      key: 'userIds',
      select: {
        options: clueCustomerMgr.selectTeamUser(key)
      },

      rules: [
        ruleOpt.required('请选择顾问')
      ]
    }],

    [{
      title: '备注',
      key: 'remark',
      disabled: _this.$route.name !== 'bonusTemplateEdit' ? true : false,
      input: {
        type: 'textarea',
        autosize: {
          minRows: 4
        }
      },
      rules: [
        ruleOpt.max(300)
      ]
    }]
  ]
}

// function helps() {
//   return [{
//       label: '模板类型',
//       value: [
//         '模板类型确定奖金的发放类型，标准及保证金对应同类型的佣金单，预发为未结佣房源的奖金发放',
//         '注意：预发的房源需要先设定标准奖金模板'
//       ]
//     }, {
//       label: '产品、生效方式、生效日期',
//       value: ['房源根据产品、生效方式、生效日期来确定匹配的奖金模板']
//     }, {
//       label: '发放标准',
//       value: [
//         '配置为“比例发放”，可选择奖金基数为“总销”或“代理费”。总销或代理费来源于佣金单的本次结算总销及本次结算代理费',
//         '配置为“固定金额”，可输入具体金额，结算奖金=填写的固定金额',
//         '若为“预发”奖金模板，发放标准中的“总销”等于房源签约总价，“虚拟代理费”等于签约总价*虚拟代理费率（虚拟代理费率在奖金参数中配置）'
//       ]
//     }, {
//       label: '结算条件及比例',
//       value: [
//         '根据回佣、年底、交房各阶段的比例发放填写，标准奖金下，三者之和等于100',
//         '若奖金为一次性结算，不含年底、交房奖金部分，则设为100%，0%，0%',
//         '若预发奖金为固定金额，比例无需填写，预发奖金会在标准奖金发放时进行相应扣减'
//       ]
//     }, {
//       label: '参考配置',
//       value: [
//         '标准 —— 岗位：顾问；发放标准：比例发放，总销；结算条件：回佣70% 年底 25% 交房 5%',
//         '预发 —— 岗位：专案；发放标准：比例发放，虚拟代理费；结算条件：签约30%'
//       ]
//     }, {
//       tips: '奖金模板在审批通过后，才可生效',
//     },
//   ]
// }

export default {
  options1,
  options2,
  // helps
}